package com.hxtec.polaris.mapper;

import com.hxtec.polaris.entity.ShopAddress;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.MyMapper;

import java.util.List;
import java.util.Map;
/**
 * @Author yonyong
 * @Description //TODO
 * @Date 2019/12/3 16:30
 * @Param
 * @return
 **/
public interface ShopAddressMapper extends MyMapper<ShopAddress> {

    /**
     * 根据手机号获取用户的所有收获地址
     * @param username
     * @return
     */
    List<Map<String,Object>> getLocationByUsername(@Param("username") String username);

    /**
     * 根据手机号获取用户的userid
     * @param username
     * @return
     */
    String getUserIdByUsername(@Param("username") String username);

    /**
     * 添加收货地址
     * @param shopAddress
     * @return
     */
    int insertLocation(ShopAddress shopAddress);

    /**
     * 更新收货地址
     * @param shopAddress
     * @return
     */
    int updateLocation(ShopAddress shopAddress);

    /**
     * 删除一条收货地址
     * @param id
     * @return
     */
    int  deleteLocation(@Param("id") String id);

    /**
     * 将当前用户的其他的收货地址改为非默认状态
     * @param uid
     * @param id
     */
    void updateDefaultLocation(@Param("uid")String uid, @Param("id")Integer id);

    /**
     * 根据手机号获取用户的所有收获地址的个数
     * @param username
     * @return
     */
    int selectCountByUsername(@Param("username")String username);

    /**
     * 根据手机号获取用户的默认收获地址的个数
     * @param username
     * @return
     */
    int selectDefaultCountByUsername(@Param("username")String username);

    /**
     * 根据手机号获取用户最新的收货地址
     * @param username
     * @return
     */
    ShopAddress getFrstLocationByUsername(@Param("username")String username);

    /**
     * 更新指定id的收货地址的默认状态 1 为默认其他为非默认收货地址
     * @param shopAddress
     * @return
     */
    int updateDefaultState(ShopAddress shopAddress);

    /**
     * 根据用户名获取默认收货地址
     * @param username
     * @return
     */
    Map<String,Object> selectDefaultByUsername(@Param("username") String username);

    /**
     * 根据用户名获取默认收货地址,当没有默认地址的情况下
     * @param username
     * @return
     */
    Map<String,Object> getDefaultWhenNoDefaultByUsername(@Param("username") String username);

    /**
     * 根据id和用户名获取指定订单的数量
     * @param id
     * @param username
     * @return
     */
    int getLocationCountByIdAndUserName(@Param("id") Integer id, @Param("username")String username);

    /**
     * 根据id和用户名获取指定订单
     * @param id
     * @param username
     * @return
     */
    Map<String,Object> getLocationByIdAndUserName(@Param("id") Integer id, @Param("username")String username);
}